/*
设备树：
目的 ：主要是为了将驱动中和硬件相关的部分提取出来，用设备树进行描述，所以设备树主要就是用于描述硬件的；

主要作用：
1.硬件平台识别：第一且最重要的是，内核使用设备树中的数据去识别特定机器。最完美的情况是，内核应该与特定硬件平台无关，因为所有硬件平台的细节都由设备树来描述。
2.实时配置：设备树允许内核在运行时配置硬件，而无需重新编译内核。例如，内核可以动态地识别并配置连接到总线上的设备，或者根据设备树中的描述来配置设备。
3.设备植入： 经过板子识别和早期配置数据解析之后，内核进一步进行初始化。期间unflatten_device_tree 函数被调用，将设备树的数据转换成一种更有效的实时形式


设备树的格式：
设备树文件的类型有,dts、.dtsi和dtb。
dtsi 是被包含的设备树源文件，类似于 C 语言中的头文件;
.dts 是设备树源文件，可以包含其他.dtsi 文件，
.dtb 由dtc编译生成.dtb 文件。

/ {
    node1 {
        a-string-property      = "A string";
        a-string-list-property = "first string"，"second string"；
        a-byte-data-property   = [0x01 0x23 0x34 0x56];
        child-nodel {
            first-child-property;
            second-child-property = <1>;
            a-string-property     = "Hello，world";
            };
            child-node2 {
            };
    };
    node2 {
        an-empty-property;
        a-cell-property = <1>;
        child-node1 {
        };
    };
};


设备树实际上就是一些硬件的一些描述参数；
设备树是在什么时候被调用的呢？==========主要是在内核初始化阶段；
1.在uboot的时候会初始化设备树，将其传给内核；
2.当内核开始执行时，它会首先解析传递给它的设备树。内核会根据设备树中的信息来初始化各种硬件设备，包括CPU、内存、I/O设备等。
3.在内核初始化过程中，各个设备驱动程序会使用设备树中的信息来查找和配置它们所支持的硬件设备。
4.设备树还帮助内核构建统一的设备模型





设备树实例：

 #include "skeleton.dtsi"     // 包含其他的 dtsi文件 
/ {
	// 定义一个设备树属性，指定中断控制器父节点
	interrupt-parent = <&gic>;
 
	aliases { // 定义别名块，用于为硬件设备定义简短的别名
		spi0 = &spi_0; // 将spi0别名为spi_0的地址
		spi1 = &spi_1; // 将spi1别名为spi_1的地址
		spi2 = &spi_2; // 将spi2别名为spi_2的地址
		i2c0 = &i2c_0; // 将i2c0别名为i2c_0的地址
		i2c1 = &i2c_1; // 将i2c1别名为i2c_1的地址
		i2c2 = &i2c_2; // 将i2c2别名为i2c_2的地址
		i2c3 = &i2c_3; // 将i2c3别名为i2c_3的地址
		i2c4 = &i2c_4; // 将i2c4别名为i2c_4的地址
		i2c5 = &i2c_5; // 将i2c5别名为i2c_5的地址
		i2c6 = &i2c_6; // 将i2c6别名为i2c_6的地址
		i2c7 = &i2c_7; // 将i2c7别名为i2c_7的地址
		csis0 = &csis_0; // 将csis0别名为csis_0的地址
		csis1 = &csis_1; // 将csis1别名为csis_1的地址
		fimc0 = &fimc_0; // 将fimc0别名为fimc_0的地址
		fimc1 = &fimc_1; // 将fimc1别名为fimc_1的地址
		fimc2 = &fimc_2; // 将fimc2别名为fimc_2的地址
		fimc3 = &fimc_3; // 将fimc3别名为fimc_3的地址
	}; // 结束别名块
 
	chipid@10000000 {
		compatible = "samsung,exynos4210-chipid";
		reg = <0x10000000 0x100>;
	};
    //   video-phy@10020710  ：  节点名称 <名称>[@<设备地址>] 的形式，“名称”是一个不超过 31 位的简单 ascii 字符串，应该根据它所体现的设备来进行命名
	mipi_phy: video-phy@10020710 {
		compatible = "samsung,s5pv210-mipi-video-phy";
        // 设备节点的地址应该在 reg 上列出 同级节点命名必须是唯一的，但只要地址不同，多个节点也可以使用一样的通用名称（同节点中 ，名称不能一样 ；多节点中， 名称+地址不能一模一样）
		reg = <0x10020710 8>;
		#phy-cells = <1>;
	};
    // 系统中每个设备都表示为一个设备树节点，每个设备树节点都拥有一个compatible 属性
	pd_mfc: mfc-power-domain@10023C40 {
        // compatible 属性是操作系统用来决定使用哪个设备驱动来绑定到一个设备上的关键因素， <制造商>,<型号>
		compatible = "samsung,exynos4210-pd";
		reg = <0x10023C40 0x20>;
	};
 
	pd_g3d: g3d-power-domain@10023C60 {
		compatible = "samsung,exynos4210-pd";
		reg = <0x10023C60 0x20>;
	};
 
	pd_lcd0: lcd0-power-domain@10023C80 {
		compatible = "samsung,exynos4210-pd";
		reg = <0x10023C80 0x20>;
	};
 
	pd_tv: tv-power-domain@10023C20 {
		compatible = "samsung,exynos4210-pd";
		reg = <0x10023C20 0x20>;
	};
 
	pd_cam: cam-power-domain@10023C00 {
		compatible = "samsung,exynos4210-pd";
		reg = <0x10023C00 0x20>;
	};
 
	pd_gps: gps-power-domain@10023CE0 {
		compatible = "samsung,exynos4210-pd";
		reg = <0x10023CE0 0x20>;
	};
 
	// 定义一个名为gic的节点，表示一个中断控制器，位于地址0x10490000
	gic: interrupt-controller@10490000 {
		// 指定该设备与"arm,cortex-a9-gic"设备树兼容
		compatible = "arm,cortex-a9-gic";
		// 指定中断控制器使用的单元格数量为3
		#interrupt-cells = <3>;
		// 声明该节点是一个中断控制器
		interrupt-controller;
		// 指定中断控制器的寄存器地址和大小
		// 第一个寄存器位于0x10490000，大小为0x1000
		// 第二个寄存器位于0x10480000，大小为0x100
		reg = <0x10490000 0x1000>, <0x10480000 0x100>;
	};
 
	combiner: interrupt-controller@10440000 {
		compatible = "samsung,exynos4210-combiner";
		#interrupt-cells = <2>;
		interrupt-controller;
		reg = <0x10440000 0x1000>;
	};
 
	sys_reg: syscon@10010000 {
		compatible = "samsung,exynos4-sysreg", "syscon";
		reg = <0x10010000 0x400>;
	};
 
	// 定义一个camera节点，表示相机子系统
	camera {
		// 兼容性属性，表示该设备与"samsung,fimc"和"simple-bus"设备树兼容
		compatible = "samsung,fimc", "simple-bus";
		// 状态属性，表示该设备当前处于禁用状态
		status = "disabled";
		// 地址单元数量，表示地址总线使用的单元数
		#address-cells = <1>;
		// 大小单元数量，表示大小总线使用的单元数
		#size-cells = <1>;
		// 范围属性，表示地址范围
		ranges;
 
		// 定义一个clock_cam节点，表示相机时钟控制器
		clock_cam: clock-controller {
			 // 时钟单元数量，表示时钟控制器使用的单元数
			 #clock-cells = <1>;
		};
 
		// 定义一个fimc_0节点，表示第一个FIMC（图像处理模块）控制器
		fimc_0: fimc@11800000 {
			// 兼容性属性，表示该设备与"samsung,exynos4210-fimc"设备树兼容
			compatible = "samsung,exynos4210-fimc";
			// 寄存器属性，表示该设备的寄存器地址和大小
			reg = <0x11800000 0x1000>;
			// 中断属性，表示该设备的中断号和中断标志
			interrupts = <0 84 0>;
			// 时钟属性，表示该设备使用的时钟
			clocks = <&clock 256>, <&clock 128>;
			// 时钟名称属性，表示时钟的名称
			clock-names = "fimc", "sclk_fimc";
			// 三星电源域属性，表示该设备所属的电源域
			samsung,power-domain = <&pd_cam>;
			// 三星系统寄存器属性，表示该设备使用的系统寄存器
			samsung,sysreg = <&sys_reg>;
			// 状态属性，表示该设备当前处于禁用状态
			status = "disabled";
		};
 
		// 定义一个fimc_1节点，表示第二个FIMC（图像处理模块）控制器
		fimc_1: fimc@11810000 {
			// 兼容性属性，表示该设备与"samsung,exynos4210-fimc"设备树兼容
			compatible = "samsung,exynos4210-fimc";
			// 寄存器属性，表示该设备的寄存器地址和大小
			reg = <0x11810000 0x1000>;
			// 中断属性，表示该设备的中断号和中断标志
			interrupts = <0 85 0>;
			// 时钟属性，表示该设备使用的时钟
			clocks = <&clock 257>, <&clock 129>;
			// 时钟名称属性，表示时钟的名称
			clock-names = "fimc", "sclk_fimc";
			// 三星电源域属性，表示该设备所属的电源域
			samsung,power-domain = <&pd_cam>;
			// 三星系统寄存器属性，表示该设备使用的系统寄存器
			samsung,sysreg = <&sys_reg>;
			status = "disabled";
		};
 
		// FIMC2设备节点，用于配置FIMC2控制器
		fimc_2: fimc@11820000 {
			compatible = "samsung,exynos4210-fimc"; // 设备兼容性，表示该设备与三星Exynos4210的FIMC控制器兼容
			reg = <0x11820000 0x1000>; // 设备的寄存器地址和大小，0x11820000为基地址，0x1000为大小
			interrupts = <0 86 0>; // 中断信息，表示中断号为86，中断标志为0
			clocks = <&clock 258>, <&clock 130>; // 时钟信息，表示使用时钟258和130
			clock-names = "fimc", "sclk_fimc"; // 时钟名称，分别对应fimc和sclk_fimc
			samsung,power-domain = <&pd_cam>; // 三星电源域属性，表示该设备属于pd_cam电源域
			samsung,sysreg = <&sys_reg>; // 三星系统寄存器属性，表示该设备使用的系统寄存器
			status = "disabled"; // 设备状态，表示该设备当前被禁用
		};
 
		// FIMC3设备节点，用于配置FIMC3控制器
		fimc_3: fimc@11830000 {
			compatible = "samsung,exynos4210-fimc"; // 设备兼容性，表示该设备与三星Exynos4210的FIMC控制器兼容
			reg = <0x11830000 0x1000>; // 设备的寄存器地址和大小，0x11830000为基地址，0x1000为大小
			interrupts = <0 87 0>; // 中断信息，表示中断号为87，中断标志为0
			clocks = <&clock 259>, <&clock 131>; // 时钟信息，表示使用时钟259和131
			clock-names = "fimc", "sclk_fimc"; // 时钟名称，分别对应fimc和sclk_fimc
			samsung,power-domain = <&pd_cam>; // 三星电源域属性，表示该设备属于pd_cam电源域
			samsung,sysreg = <&sys_reg>; // 三星系统寄存器属性，表示该设备使用的系统寄存器
			status = "disabled"; // 设备状态，表示该设备当前被禁用
		};
 
		// CSIS0设备节点，用于配置CSIS0控制器
		csis_0: csis@11880000 {
			compatible = "samsung,exynos4210-csis"; // 设备兼容性，表示该设备与三星Exynos4210的CSIS控制器兼容
			reg = <0x11880000 0x4000>; // 设备的寄存器地址和大小，0x11880000为基地址，0x4000为大小
			interrupts = <0 78 0>; // 中断信息，表示中断号为78，中断标志为0
			clocks = <&clock 260>, <&clock 134>; // 时钟信息，表示使用时钟260和134
			clock-names = "csis", "sclk_csis"; // 时钟名称，分别对应csis和sclk_csis
			bus-width = <4>; // 总线宽度，表示使用4位总线
			samsung,power-domain = <&pd_cam>; // 三星电源域属性，表示该设备属于pd_cam电源域
			phys = <&mipi_phy 0>; // 物理层属性，表示使用mipi_phy的0号实例
			phy-names = "csis"; // 物理层名称，对应csis
			status = "disabled"; // 设备状态，表示该设备当前被禁用
			#address-cells = <1>; // 地址单元数量，表示使用1个地址单元
			#size-cells = <0>; // 大小单元数量，表示不使用大小单元
		};
 
		// CSIS1设备节点，用于配置CSIS1控制器
		csis_1: csis@11890000 {
			compatible = "samsung,exynos4210-csis"; // 设备兼容性，表示该设备与三星Exynos4210的CSIS控制器兼容
			reg = <0x11890000 0x4000>; // 设备的寄存器地址和大小，0x11890000为基地址，0x4000为大小
			interrupts = <0 80 0>; // 中断信息，表示中断号为80，中断标志为0
			clocks = <&clock 261>, <&clock 135>; // 时钟信息，表示使用时钟261和135
			clock-names = "csis", "sclk_csis"; // 时钟名称，分别对应csis和sclk_csis
			bus-width = <2>; // 总线宽度，表示使用2位总线
			samsung,power-domain = <&pd_cam>; // 三星电源域属性，表示该设备属于pd_cam电源域
			phys = <&mipi_phy 2>; // 物理层属性，表示使用mipi_phy的2号实例
			phy-names = "csis"; // 物理层名称，对应csis
			status = "disabled"; // 设备状态，表示该设备当前被禁用
			#address-cells = <1>; // 地址单元数量，表示使用1个地址单元
			#size-cells = <0>; // 大小单元数量，表示不使用大小单元
		};
	};
 
	watchdog@10060000 {
		compatible = "samsung,s3c2410-wdt";
		reg = <0x10060000 0x100>;
		interrupts = <0 43 0>;
		clocks = <&clock 345>;
		clock-names = "watchdog";
		status = "disabled";
	};
 
	rtc@10070000 { // 定义一个设备树节点，节点名称为rtc，地址为0x10070000
		compatible = "samsung,s3c6410-rtc"; // 兼容性属性，表示该设备与samsung的s3c6410 rtc兼容
		reg = <0x10070000 0x100>; // 寄存器地址和大小，0x10070000为基地址，0x100为大小
		interrupts = <0 44 0>, <0 45 0>; // 中断属性，表示该设备使用两个中断，中断号为44和45
		clocks = <&clock 346>; // 时钟属性，表示该设备使用的时钟编号为346
		clock-names = "rtc"; // 时钟名称，表示该设备使用的时钟名称为rtc
		status = "disabled"; // 状态属性，表示该设备当前处于禁用状态
	};
 
	keypad@100A0000 {
		compatible = "samsung,s5pv210-keypad";
		reg = <0x100A0000 0x100>;
		interrupts = <0 109 0>;
		clocks = <&clock 347>;
		clock-names = "keypad";
		status = "disabled";
	};
 
	sdhci@12510000 {
		compatible = "samsung,exynos4210-sdhci";
		reg = <0x12510000 0x100>;
		interrupts = <0 73 0>;
		clocks = <&clock 297>, <&clock 145>;
		clock-names = "hsmmc", "mmc_busclk.2";
		status = "disabled";
	};
 
	sdhci@12520000 {
		compatible = "samsung,exynos4210-sdhci";
		reg = <0x12520000 0x100>;
		interrupts = <0 74 0>;
		clocks = <&clock 298>, <&clock 146>;
		clock-names = "hsmmc", "mmc_busclk.2";
		status = "disabled";
	};
 
	sdhci@12530000 {
		compatible = "samsung,exynos4210-sdhci";
		reg = <0x12530000 0x100>;
		interrupts = <0 75 0>;
		clocks = <&clock 299>, <&clock 147>;
		clock-names = "hsmmc", "mmc_busclk.2";
		status = "disabled";
	};
 
	sdhci@12540000 {
		compatible = "samsung,exynos4210-sdhci";
		reg = <0x12540000 0x100>;
		interrupts = <0 76 0>;
		clocks = <&clock 300>, <&clock 148>;
		clock-names = "hsmmc", "mmc_busclk.2";
		status = "disabled";
	};
 
	ehci@12580000 {
		compatible = "samsung,exynos4210-ehci";
		reg = <0x12580000 0x100>;
		interrupts = <0 70 0>;
		clocks = <&clock 304>;
		clock-names = "usbhost";
		status = "disabled";
	};
 
	ohci@12590000 {
		compatible = "samsung,exynos4210-ohci";
		reg = <0x12590000 0x100>;
		interrupts = <0 70 0>;
		clocks = <&clock 304>;
		clock-names = "usbhost";
		status = "disabled";
	};
 
	mfc: codec@13400000 {
		compatible = "samsung,mfc-v5";
		reg = <0x13400000 0x10000>;
		interrupts = <0 94 0>;
		samsung,power-domain = <&pd_mfc>;
		clocks = <&clock 273>;
		clock-names = "mfc";
		status = "disabled";
	};
 
	serial@13800000 {
		compatible = "samsung,exynos4210-uart";
		reg = <0x13800000 0x100>;
		interrupts = <0 52 0>;
		clocks = <&clock 312>, <&clock 151>;
		clock-names = "uart", "clk_uart_baud0";
		status = "disabled";
	};
 
	serial@13810000 {
		compatible = "samsung,exynos4210-uart";
		reg = <0x13810000 0x100>;
		interrupts = <0 53 0>;
		clocks = <&clock 313>, <&clock 152>;
		clock-names = "uart", "clk_uart_baud0";
		status = "disabled";
	};
 
	serial@13820000 { // 定义一个名为serial的设备节点，基地址为0x13820000
		compatible = "samsung,exynos4210-uart"; // 设备兼容性字符串，表示该设备是一个Samsung Exynos4210 UART
		reg = <0x13820000 0x100>; // 设备的寄存器地址和大小，基地址为0x13820000，大小为0x100字节（通过硬件平台的技术手册获取地址以及大小）
		interrupts = <0 54 0>; // 设备的中断信息，中断号为54，中断标志为0
		clocks = <&clock 314>, <&clock 153>; // 设备使用的时钟，第一个时钟索引为314，第二个时钟索引为153
		clock-names = "uart", "clk_uart_baud0"; // 时钟的名称，分别对应上述两个时钟索引
		status = "disabled"; // 设备的状态，当前为禁用状态
	};
 
	serial@13830000 {
		compatible = "samsung,exynos4210-uart";   // 兼容性字符串，表示该设备节点兼容的硬件设备，这里是三星的S3C2440 UART控制器
		// 定义寄存器地址和大小
		reg = <0x13830000 0x100>; // reg属性指定设备的寄存器基地址和大小，这里基地址是0x13830000，大小是0x100（256字节）
		// 定义中断信息
		interrupts = <0 55 0>; // interrupts属性指定设备的中断信息，这里表示中断号为55，中断标志为0
		// 定义时钟信息
		clocks = <&clock 315>, <&clock 154>; // clocks属性指定设备使用的时钟，这里引用了两个时钟，分别是clock节点的315和154
		// 定义时钟名称
		clock-names = "uart", "clk_uart_baud0"; // clock-names属性为clocks属性中的时钟提供名称，这里分别为"uart"和"clk_uart_baud0"
		// 定义设备状态
		status = "disabled"; // status属性指定设备的状态，这里表示设备当前是禁用状态
	};
 
	i2c_0: i2c@13860000 {
        // 这个属性定义了用于指定设备地址所需的单元数量；如果 #address-cells 的值为1，那么地址就是一个32位的值 
		#address-cells = <1>;
        // 这个属性定义了用于指定设备大小所需的单元数量；如果 #size-cells 的值为0，那么大小属性不需要指定
		#size-cells = <0>;
		// 兼容性字符串，表示该设备节点兼容的硬件设备，这里是三星的S3C2440 I2C控制器
		compatible = "samsung,s3c2440-i2c";
		// 寄存器地址和大小，格式为<基地址 长度>，这里表示I2C控制器的基地址为0x13860000，长度为0x100字节
		reg = <0x13860000 0x100>;
		// 中断信息，格式为<中断号 中断标志 中断控制器>，这里表示使用中断号58，无特殊标志，使用默认中断控制器
		interrupts = <0 58 0>;
		// 时钟信息，格式为<&时钟节点 时钟ID>，这里表示使用名为"clock"的时钟节点的第317个时钟
		clocks = <&clock 317>;
		// 时钟名称，用于标识上述时钟信息中的时钟，这里是"I2C"
		clock-names = "i2c";
		// 引脚控制名称，表示该设备使用的引脚控制配置，这里是默认配置
		pinctrl-names = "default";
		// 引脚控制配置，格式为<&引脚控制节点>，这里表示使用名为"i2c0_bus"的引脚控制配置
		pinctrl-0 = <&i2c0_bus>;
		// 设备状态，表示该设备当前的状态，这里是"disabled"表示禁用
		status = "disabled";
	};
 
	i2c_1: i2c@13870000 { // 定义一个名为i2c_1的I2C总线节点，基地址为0x13870000
		#address-cells = <1>; // 该节点使用的地址单元数量为1
		#size-cells = <0>; // 该节点使用的大小单元数量为0，表示不支持动态分配大小
		compatible = "samsung,s3c2440-i2c"; // 兼容性字符串，表示该设备与samsung s3c2440的I2C控制器兼容
		reg = <0x13870000 0x100>; // I2C控制器的基地址和大小，基地址为0x13870000，大小为0x100字节
		interrupts = <0 59 0>; // 中断信息，表示中断号为59，中断优先级为0
		clocks = <&clock 318>; // 引用时钟控制器节点，并指定时钟ID为318
		clock-names = "i2c"; // 时钟名称为"i2c"
		pinctrl-names = "default"; // 引用默认的引脚控制配置
		pinctrl-0 = <&i2c1_bus>; // 引用名为i2c1_bus的引脚控制配置
		status = "disabled"; // 设备状态为禁用
	};
 
	i2c_2: i2c@13880000 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "samsung,s3c2440-i2c";
		reg = <0x13880000 0x100>;
		interrupts = <0 60 0>;
		clocks = <&clock 319>;
		clock-names = "i2c";
		status = "disabled";
	};
 
	i2c_3: i2c@13890000 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "samsung,s3c2440-i2c";
		reg = <0x13890000 0x100>;
		interrupts = <0 61 0>;
		clocks = <&clock 320>;
		clock-names = "i2c";
		status = "disabled";
	};
 
	i2c_4: i2c@138A0000 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "samsung,s3c2440-i2c";
		reg = <0x138A0000 0x100>;
		interrupts = <0 62 0>;
		clocks = <&clock 321>;
		clock-names = "i2c";
		status = "disabled";
	};
 
	i2c_5: i2c@138B0000 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "samsung,s3c2440-i2c";
		reg = <0x138B0000 0x100>;
		interrupts = <0 63 0>;
		clocks = <&clock 322>;
		clock-names = "i2c";
		status = "disabled";
	};
 
	i2c_6: i2c@138C0000 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "samsung,s3c2440-i2c";
		reg = <0x138C0000 0x100>;
		interrupts = <0 64 0>;
		clocks = <&clock 323>;
		clock-names = "i2c";
		status = "disabled";
	};
 
	i2c_7: i2c@138D0000 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "samsung,s3c2440-i2c";
		reg = <0x138D0000 0x100>;
		interrupts = <0 65 0>;
		clocks = <&clock 324>;
		clock-names = "i2c";
		status = "disabled";
	};
 
	spi_0: spi@13920000 {
		compatible = "samsung,exynos4210-spi";
		reg = <0x13920000 0x100>;
		interrupts = <0 66 0>;
		dmas = <&pdma0 7>, <&pdma0 6>;
		dma-names = "tx", "rx";
		#address-cells = <1>;
		#size-cells = <0>;
		clocks = <&clock 327>, <&clock 159>;
		clock-names = "spi", "spi_busclk0";
		pinctrl-names = "default";
		pinctrl-0 = <&spi0_bus>;
		status = "disabled";
	};
 
	spi_1: spi@13930000 {
		compatible = "samsung,exynos4210-spi";
		reg = <0x13930000 0x100>;
		interrupts = <0 67 0>;
		dmas = <&pdma1 7>, <&pdma1 6>;
		dma-names = "tx", "rx";
		#address-cells = <1>;
		#size-cells = <0>;
		clocks = <&clock 328>, <&clock 160>;
		clock-names = "spi", "spi_busclk0";
		pinctrl-names = "default";
		pinctrl-0 = <&spi1_bus>;
		status = "disabled";
	};
 
	spi_2: spi@13940000 {
		compatible = "samsung,exynos4210-spi";
		reg = <0x13940000 0x100>;
		interrupts = <0 68 0>;
		dmas = <&pdma0 9>, <&pdma0 8>;
		dma-names = "tx", "rx";
		#address-cells = <1>;
		#size-cells = <0>;
		clocks = <&clock 329>, <&clock 161>;
		clock-names = "spi", "spi_busclk0";
		pinctrl-names = "default";
		pinctrl-0 = <&spi2_bus>;
		status = "disabled";
	};
 
	pwm@139D0000 {
		compatible = "samsung,exynos4210-pwm";
		reg = <0x139D0000 0x1000>;
		interrupts = <0 37 0>, <0 38 0>, <0 39 0>, <0 40 0>, <0 41 0>;
		clocks = <&clock 336>;
		clock-names = "timers";
		#pwm-cells = <2>;
		status = "disabled";
	};
 
	amba {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "arm,amba-bus";
		interrupt-parent = <&gic>;
		ranges;
 
		pdma0: pdma@12680000 {
			compatible = "arm,pl330", "arm,primecell";
			reg = <0x12680000 0x1000>;
			interrupts = <0 35 0>;
			clocks = <&clock 292>;
			clock-names = "apb_pclk";
			#dma-cells = <1>;
			#dma-channels = <8>;
			#dma-requests = <32>;
		};
 
		pdma1: pdma@12690000 {
			compatible = "arm,pl330", "arm,primecell";
			reg = <0x12690000 0x1000>;
			interrupts = <0 36 0>;
			clocks = <&clock 293>;
			clock-names = "apb_pclk";
			#dma-cells = <1>;
			#dma-channels = <8>;
			#dma-requests = <32>;
		};
 
		mdma1: mdma@12850000 {
			compatible = "arm,pl330", "arm,primecell";
			reg = <0x12850000 0x1000>;
			interrupts = <0 34 0>;
			clocks = <&clock 279>;
			clock-names = "apb_pclk";
			#dma-cells = <1>;
			#dma-channels = <8>;
			#dma-requests = <1>;
		};
	};
 
	fimd: fimd@11c00000 {
		compatible = "samsung,exynos4210-fimd";
		interrupt-parent = <&combiner>;
		reg = <0x11c00000 0x20000>;
		interrupt-names = "fifo", "vsync", "lcd_sys";
		interrupts = <11 0>, <11 1>, <11 2>;
		clocks = <&clock 140>, <&clock 283>;
		clock-names = "sclk_fimd", "fimd";
		samsung,power-domain = <&pd_lcd0>;
		status = "disabled";
	};
};

*/


